package factory.abstractfactory;

/**
 * @author wcj
 * @Date 2021/6/20 22:33
 * @Version 1.0
 */
public class Client {

    /**
     * 抽象工厂模式：隐藏了创建对象的细节，并且适用于多个产品族
     * 优点：实现了对象创建的隐藏
     * 缺点：如果新增加一个产品族，代码量增加太大，增加的代码包含产品族的接口，实体类，产品族的工厂，另外抽象工厂还要增加方法，接口生成器还要还要增加分支判断
     * 可以解决的方面：对于产品族实体类和工厂类，以及抽象工厂中的方法是我们必须要增加的，但是接口生成器中的分子判断我们可以根据反射+配置文件的形式来实现，从而满足开闭原则
     *
     * @param args
     */
    public static void main(String[] args) {
        OperationFactory operation = (OperationFactory) FactoryCreator.createFactory();
        Operation operationAdd = operation.getOperation("+");
        System.out.println(operationAdd.operation(5L, 6L));
    }
}
